.\" Manpage for ridlc.
.\" Contact woodhead99@gmail.com to correct errors or typos.
.TH man 1 "16 Mar. 2024" "1.1" "rpc-frmwrk user manuals"
.SH NAME
ridlc \- ridl compiler to generate skelton code for rpc-frmwrk.
.SH SYNOPSIS
ridlc [options] <ridl file>
.SH DESCRIPTION
.BR ridlc
Parses the given ridl file and generate a set of skelton code in the
specified language, Python or C++ at present.
.SH OPTIONS
.TP
.BR \-I " "\fIpath\fR
Specify the path to search for the included files. This option can repeat many times.
.TP
.BR \-O " "\fIpath\fR
Specify the path to store the generated files.
.TP
.BR \-p " "
Generate the Python skelton files.
.TP
.BR \-j " "
Generate the Java skelton files.
.TP
.BR \-J " "
Generate the JavaScript skelton files (client only). ridlc does not support '-f'
when this option is specified.
.TP
.BR \-\-odesc_url=<url> " "
Specify the url where to find the object desription file for the JS client.
The url must not include the name of the object description file. And it is a
mandatory option for JS skelton generator. 
.TP
.BR \-\-auth " "
Generate the JS client with OAuth2 authorization. This option works with
 '-J' option only.
.TP
.BR \-f " "
Generate the 'skelton files with 'rpcfs' support. C++ or Python at present.
.TP
.BR \-P " "\fIprefix\fR
Specify the prefix of the Java package. This option is only effective for Java.
.TP
.BR \-l " "
Build a shared library instead of a program. This option works for programms
of C++ skelton
.TP
.BR \-L " "\fIlang\fR
Output the 'README.md' file in the specified language <lang>. Currently we support
two languages, "cn" as Chinese, and "en" as English.
.TP
.BR \-s " "
Generate the skelton code for `RPC-Over-Stream`, a new architecture with 99%
of communication over stream channels.
.TP
.BR \-b " "
Generate the skelton code with a built-in `rpcrouter`, which has lower
latency and higher throughput than stand-alone rpcrouter.
.TP
.BR \-m " "\fI<app instance name>\fR
Generate the skelton code with the monitoring support, for the specified application <app instance name>. 
You can register an application with the monitor's utility 'addapp.sh'. Currently this option works only
with '-s' option. Note: the <app instance name> is not the 'appname' in the ridl file. And it is a server-only option.
.TP
.BR \-\-server " "
Generate skeleton code for server only.
.TP
.BR \-\-client " "
Generate skeleton code for client only.
.TP
.BR \-\-services " "\fIservice_list\fR
Generate skeleton code for the specified services. The services are separated with ',' and no white spaces.
.TP
.BR \-\-sync_mode " "\fI<interface_name> =<async|async_s|async_p|sync>\fR
Override the synchronization mode defined in the ridl file with the specified one for the given interface. The <interface name> can be followed with a method name such as \fI<interface_name>.<method_name>\fR to further narrowing the overriding scope to a single method.
.TP
.BR \-\-pkgname " "\fI<package name>\fR
Specify a full qualified Java package name for current Java skeleton code. Otherwise, the default package name is used, which is in the format 'org.rpcf.<appname>'

.SH SEE ALSO
ridl(7), rpcrouter(1)
.SH BUGS
No known bugs.
.SH AUTHOR
zhiming <woodhead99@gmail.com>

